软考真题
第4题
希尔排序算法又称最小增量排序算法,其基本思想是:
步骤1 :构造一个步长序列delta1、delta2...、deltak ,其中delta1=n/2 ,后面的每个delta是前一个的1/2 , deltak=1;
步骤2 :根据步长序列、进行k趟排序;
步骤3 :对第i趟排序,根据对应的步长delta,将等步长位置元素分组,对同一组内元素在原位置上进行直接插入排序。
【C代码】
下面是算法的C语言实现。
( )常量和变量说明
data:待排序数组data,长度为n,待排序数据记录在data[0]、data[1]、...、data[n-1]中。
n:数组a中的元素个数。
delta:步长数组。
( )C程序
#include
void shellsort(int data[ ], int n){
int *delta,k,i,t,dk,j;
k=n;
delta=(int *)nalloc(sizeof(int)*(n/2));
if(i=0)
do{
( 1 ) ;
delta[i++]=k;
}while ( 2 ) ;
i=0;
while((dk=delta[i])>0){
for(k=delta[i];k if( ( 3 ) ) {
t=data[k];
for(j=k-dk;j>=0&&t data[j+dk]=data[j];
}/*for*/
( 4 ) ; //data[j+dk]=t;
}/*if*/
++i;
}/*while*/
}
【问题4.1】 (8分)
根据说明和c代码,填充c代码中的空( ) ~ ( )
【问题4.2】 (4分)
根据说明和c代码,该算法的时间复杂度( )O(n2) (小于、等于或大于)。该算法是否稳定( ) ( 是或否)。
【问题4.3】 (3分)
对数组(15、9、7、8、20、-1、 4)用希尔排序方法进行排序,经过di-趟排后得到的数组为( )
2020年 下半年 下午试卷 案例
正确答案:
你的答案:
请先在App中激活(应用市场搜“软考真题”)
知识点:
试卷:
2020年 下半年 下午试卷 案例

笔记

闲中划水

请先在App中激活(应用市场搜“软考真题”)

2021-04-14


牛哥哥

请先在App中激活(应用市场搜“软考真题”)

2021-05-17


大章章

请先在App中激活(应用市场搜“软考真题”)

2022-04-26


请先在App中激活(应用市场搜“软考真题”)

2021-01-27


请先在App中激活(应用市场搜“软考真题”)

2021-05-28


strong

请先在App中激活(应用市场搜“软考真题”)

2023-05-14


墨芊艺

请先在App中激活(应用市场搜“软考真题”)

2023-05-22


YouCan

请先在App中激活(应用市场搜“软考真题”)

2023-10-30


学习的男人

请先在App中激活(应用市场搜“软考真题”)

2024-05-11


答题卡
加油
纠错
得分:0